package _4TCPChat;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ChatServerFrame extends JFrame {

	private JPanel contentPane;
	private JTextArea textArea;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ChatServerFrame frame = new ChatServerFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ChatServerFrame() {
		
		this.setTitle("服务端");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JScrollPane scrollPane = new JScrollPane();
		contentPane.add(scrollPane, BorderLayout.CENTER);
		
		textArea = new JTextArea();
		scrollPane.setViewportView(textArea);
		
		
		showMsg("Hello world!");
		showMsg("123456");
		
		
		// 创建网络模块
		TCPChatServer s = new TCPChatServer();
		// 告诉网络模块 窗体对象是哪个，以便网络模块显示信息
		s.csFrame = this;
		// 开启服务线程
		s.start();
		
	}

	
	public void showMsg(String msg)
	{
		this.textArea.setText(this.textArea.getText()+"\r\n"+msg);
	}
}

// 编写步骤
// 步骤1. 编写界面
//    ChatServerFrame	
//    ChatClientFrame 	

// 步骤2. 编写服务器模块
//    TCPChatServer
//	  继承Thread
//    在run方法中 
	//  创建SerSocket
	//  监听SerSocket
	// 		客户端连上了，再开线程处理客户端发来内容
//   在ChatServerFrame中创建TCPChatServer对象并启动

// 步骤3. 编写客户端模块
//	TCPChatClient
//	继承Thread
  //    在run方法中 
		// 连接服务器
		// 连上服务器后，不断读取服务器发来了的信息
//	在ChatClientFrame中创建TCPChatClient对象并启动线程

// 步骤4. 客户端发送信息
// 在TCPChatClient提供一个send方法
// ChatClientFrame中点击按钮的时候调用该方法

// 步骤5. 服务器转发信息
//    客户端连上时用容器保存所有的输出流
//    接收到客户端发来信息，转发给所有的输出流



// 练习:
// 1. 编写测试TCP基本程序
// *2. 使用UDP实现聊天室功能